Industrial controllers such as those described in U.S. Pat. Nos. 3,810,118; 3,942,158; 4,165,534; and 4,442,504 are typically centralized, high-speed computers that may be connected to industrial equipment, such as automated assembly lines or machine tools, to operate such equipment in accordance with a stored control program. The stored program includes instructions, which when executed, examine the condition of selected inputs to the controller from sensing devices on the controlled equipment and outputs from the controller, and energize or de-energize selected outputs or actuators from the controller to operate devices on the controlled equipment.
Inputs to the industrial controller may be discrete binary signals, such as those from switches, which may detect limits of process variables such as motion, temperature, time, or other quantities, or the inputs may be analog measures of process variables which are generally then converted to digital words for processing, or the inputs may be multivariable information.
Similarly, the outputs of the industrial controller may be either discrete binary signals as produced, typically, by mechanical or solid state relays; analog outputs produced by means of a digital to analog converter; or multi-variable commands.
Some of the inputs and outputs to the industrial controller may be remotely located and communicated to the controller by means of a digital communications link. Typically, the digital communications link connects the controller with a remote "I/O rack" at which a number of inputs and outputs are clustered.
Present industrial controllers are often programmed by means of a "ladder logic" language in which the control program is represented as ladders whose vertical rails represent a power source or power return and whose rungs are series and parallel connected contacts and relay coils. The contacts may be either normally-open or normally-closed as controlled either by external inputs or by relay coils. This language reflects an implementation of the control program in discrete electrical devices (relays) as was practiced prior to industrial controllers.
The centralized architecture of current industrial control systems, in which a single central controller is used to read and control many remote control points, reflects both the historically high cost of computer hardware (as may be reduced by the use of a single centralized controller) and the desire for centralized reporting and coordination of the operation of an entire industrial process. Nevertheless, a centralized controller architecture may not be ideal for all control tasks.
For some simple control tasks with few inputs and outputs, the centralized controller may be unnecessarily complex and expensive, providing unneeded features and capacity. Conversely, for some complex control tasks with many inputs and outputs, the speed limitations of the centralized controller may significantly degrade the performance of the control system.
The centralized controller typically processes each input and output of the control system, sequentially. For large programs, a significant delay may occur between the changing of an input and the control of a corresponding output. If the delay is large enough, the control system may become sluggish or unpredictable. With a centralized controller, the state of each remote input and output must also be repeatedly transmitted over the link to the centralized controller. When there are many remote inputs and outputs to the control system, the capacity of the link between the I/O and the centralized controller may become overloaded.
Finally, failure of the centralized controller typically disables the entire control system. Troubleshooting the cause of the controller failure may be difficult because often the failed controller cannot report information about its internal operation or execute troubleshooting programs.
One technique for eliminating some of these shortcomings of a centralized controller architecture is to divide the control process up to be executed by many separate computing devices each of which may be located near each of the different control points on the machine or process. In this way, input and output signals are only communicated to a local computing device and do not tax the capacity of the link connecting the computing devices together. Because the many computing devices may perform their control tasks in parallel, an effective speed gain is also realized. This approach, where there are many separate computing devices acting in concert, is termed: "highly distributed control".
Ideally, in a highly distributed control system, a single control program is written for the entire system and then broken apart so that portions can be transmitted (downloaded) to and stored in each of the computing devices. Together with the control program, the computing devices receive instructions as to how to communicate among each other to synchronize the control process.
Dividing a single control program among various distributed computing devices, and providing the computing devices with the necessary instructions to synchronize their operation can be a difficult and time consuming process. Normally, there will be a number of ways that a control program can be divided. Choosing the correct division is important to ensure optimal performance of the control system.